package com.gitee.wsl.platform.scheduler

import kotlinx.browser.window
import kotlinx.coroutines.Runnable

internal actual typealias TimeoutId = Int

@OptIn(ExperimentalWasmJsInterop::class)
internal actual fun jsSetTimeout(task: Runnable, delayMillis: Int): TimeoutId =
    window.setTimeout({ task().toJsReference() }, delayMillis)

@OptIn(ExperimentalWasmJsInterop::class)
internal actual fun jsSetInterval(task: Runnable, delayMillis: Int): TimeoutId =
    window.setInterval({ task().toJsReference() }, delayMillis)

internal actual fun jsClearTimeout(id: TimeoutId) {
    window.clearTimeout(id)
}

internal actual fun jsClearInterval(id: TimeoutId) {
    window.clearInterval(id)
}
